第 五 章  
图 像 分 割  
汇报人:陈西PPT工作室  
目录  
值分割  
域分割  
缘检测  
Hough变换  
水岭算法  
阈 值 分 割  
阈值分割  
阈值分割法是一种基于区域的图像分割技术,它不仅可以极大的  
压缩数据量,而且也大大简化了分析和处理步骤。阈值分割法是一种  
传统的最常用的图像分割方法,特别适用于目标和背景占据不同灰度  
级范围的图像。  
阈值分割法  
图像的阈值分割是一种按图像像素灰度幅度进行分割的方法,把图像的灰度分成不同的等级,  
然后用设置灰度门限(阈值)的方法确定有意义的区域或要分割物体的边界。阈值分割操作被定  
义为:  
S {(r,c) R g  f  g }  
min  
r,c  
max  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
因此,阈值分割将图像内灰度值处于某一指定灰度值范围内全部点选到输出区域S中。如果  
g
g
光照能保持恒定,阈值ꢀꢀ 和ꢀmax 能在系统设置时被选定且永远不用被调整。  
min  
阈值分割法  
对于只有背景和目标两类对象的灰度图像来说,阈值选取过高,容易把大量的目标误判为背景;阈值  
选取过低,又容易把大量的背景误判为目标。  
一般来说,阈值分割可以分成以下三步:  
(1)确定阈值;(2)将阈值与像素灰度值进行比较;(3)把像素分类。  
根据直方图谷底确定阈值法  
如果图像由暗色背景上得较亮物体组成,以这样组成方式的图  
像的灰度直方图具有明显谷底,从背景中提取物体的一种很明显的  
方法就是选择两峰之间的谷底对应的灰度值T作为阈值进行图像分  
割。  
T值的选取如图所示: ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ值  
根据直方图谷底确定阈值法  
对于有多个峰值的直方图,可以选择多个阈值。  
例如,当有两个明显谷底时,可以表示为下式:  
g(x, y)  
分割后的图像ꢀꢀꢀ由下式给出:  
x, y  
x, y  
T  
T  
255 f  
af x, y  T2  
   
g
x
0
f
ꢀꢀ g ꢀ  
x
 b  T f  
x , y  Tꢀꢀꢀꢀ  
1
2
cf  
x, y  
T1  
根据直方图谷底确定阈值分割实例  
程序如下:  
*
*
*
读取图像ꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'letters')  
获得图像尺寸ꢀꢀꢀꢀꢀꢀget_image_size (Image, Width, Height)  
关闭、重新打开窗口ꢀꢀꢀdev_close_window ()  
a)原图  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowID)  
*
*
*
*
*
设置输出窗口颜色为红色ꢀdev_set_color ('red')  
计算图像的灰度直方图ꢀꢀgray_histo (Image, Image, AbsoluteHisto, RelativeHisto)  
从直方图中确定灰度值阈值histo_to_thresh (RelativeHisto, 8, MinThresh, MaxThresh)  
设置区域显示的颜色数目ꢀdev_set_colored (12)  
b)阈值  
根据计算得到的MinThreshMaxThresh进行阈值分割,并显示区域  
分割结果图  
threshold (Image, Region, MinThresh, MaxThresh)  
显示区域ꢀꢀꢀꢀꢀꢀꢀꢀdev_display (Region)  
*
实验法  
基于直方图的自动阈值分割实例  
程序如下:  
read_image (Aegypt1, 'egypt1')  
auto_threshold (Aegypt1, Regions, 4)  
dev_display (Regions)  
a)原图  
(b)阈值分割结果图  
局部阈值分割法  
局部阈值分割算dyn_threshold实例  
程序如下:  
*
*
*
*
关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
获取图像ꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'photometric_stereo/embossed_01')  
获得图像尺寸ꢀꢀꢀꢀꢀꢀget_image_size (Image, Width, Height)  
打开适应图像大小的窗口ꢀdev_open_window (0, 0, Width, Height, 'black',  
WindowHandle1)  
(a)原图  
*
*
1
*
*
在图像上使用均值滤波器进行适当平滑 mean_image (Image, ImageMean, 59, 59)  
动态阈值分割,提取圆区域dyn_threshold (Image, ImageMean, RegionDynThresh,  
5, 'not_equal')  
显示图像ꢀꢀꢀꢀꢀꢀꢀꢀdev_display (Image)  
显示提取区域ꢀꢀꢀꢀꢀꢀdev_display (RegionDynThresh)  
b)dyn_threshold阈值分割结果  
区 域 分 割  
ꢀꢀꢀꢀꢀꢀ  
区域分割  
一幅图像中属于同一区域的像素一般具有相同或相似的属性,区  
域分割通过利用的是图像该性质进行划分,使具有相同像素的像素归  
属同一区域,不同属性的像素归属不同区域。传统的区域分割方法有  
区域生长和区域分裂与合并,其中最基础的是区域生长法。  
区域生长法  
pt  
区域生长法  
、区域生长法的过程  
如果以灰度分布相似性作为生长准则来决定合并的区域,则需要比较邻接区域的累积直方图并检  
测其相似性,过程如下:  
1)把图像分成互不重叠的合适小区域;  
2)比较各个邻接小区域的累积灰度直方图。  
柯尔莫哥洛夫-斯米诺夫检测:  
max h  
z
h2  
z
T  
1
R
平滑差分检测:  
h1 z  h2 z  T  
     
z
区域生长法  
2、在Halcon中区域生长法的算子  
区域生长法实例  
程序如下:  
*
*
读取图read_image (Image, 'fabrik')  
对图像进行均值处理,选用circle类型的中值滤波器  
a)原图  
median_image (Image, ImageMedian, 'circle', 2, 'mirrored')  
使用regiongrowing算子寻找颜色相近的邻域  
regiongrowing (ImageMedian, Regions, 1, 1, 2, 5000)  
对图像进行区域分割,提取满足各个条件的各个独立区域  
*
*
shape_trans (Regions, Centers, 'inner_center')  
connection (Centers, SingleCenters)  
*
计算出初步提取的区域的中心点坐标  
area_center (SingleCenters, Area, Row, Column)  
以均值灰度图像为输入,进行区域增长计算,计算的起始坐标为上一步的各区  
域中心 regiongrowing_mean (ImageMedian, RegionsMean, Row, Column, 25, 100)  
*
b)regiongrowing  
(c)regiongrowing-  
mean 执行结果  
执行结果  
区域分裂合并法  
当事先完全不了解区域形状和区域数目时,可采用分裂合并法。  
从上面图像分割的方法中了解到,图像阈值分割法可以认为是从上到下(从整幅图像根据不同的  
阈值分成不同区域)对图像进行分开,而区域生长法相当于从下往上(从种子像素开始不断接纳新  
像素最后构成整幅图像)不断对像素进行合并。  
如果将这两种方法结合起来对图像进行划分,便是分裂合并算法。  
因此,其实质是先把图像分成任意大小而且不重叠的区域,然后再合并或分裂这些区域以满足分  
割的要求。  
分裂合并算法是基于四叉树思想,下面先对四叉树进行简单介绍。  
区域分裂合并法  
.四叉树  
令R表示整幅图像区域,并选择一个属性Q。对R进行分割的一种方法是依次将它细分为越来越小的四象  
R
Q(R ) TRUE  
Q(R) FALSE  
限区域,以便对于任何区域 有ꢀꢀꢀ  
i
ꢀꢀꢀ ,从整个区域开始,如果 ꢀꢀꢀꢀꢀ ,则将该区域再次细分  
i
为四个子象限区域,以此类推。  
a)被分割的图像  
b)对应的四叉图  
区域分裂合并法  
Q(R ) FALSE  
Ri  
i
Q(R  R )  TRUE  
Rj  
Rk  
j
k
区域分裂合并法  
2.利用四叉树进行图像分割  
区域分裂合并法  
2.利用四叉树进行图像分割  
边 缘 检 测  
边缘检测  
边缘是指图像中像素灰度有阶跃变化或屋顶状变化的那些像素的  
集合。它包含了丰实的信息,是图像识别中抽取的重要属性。边缘检  
测是图像处理和计算机视觉中的基本问题,因此,我们需要理解边缘  
检测的相关知识。  
边缘检测原理  
梯度对应一阶导数,对于一个连续图像函数ꢀ  
f
x, y  
,梯度矢量定义为:  
T
f  
f   
T
f
x, y  
G
Gy  
x
x  
y  
ꢀꢀꢀꢀꢀꢀꢀ  
梯度的幅度为:  
1/ 2  
2
2
y
f
x, y  mag  
f  
x, y  
G  G  
x
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
梯度的方向为:  
 G   
y
x, y  
 arctan   
G
x
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
边缘检测原理  
Roberts算子利用局部差分算子寻找边缘,边缘定位较准,但容易丢失一部分边缘,同  
时由于图像没有经过平滑处理,因此不具有抑制噪声的能力。该算子对具有陡峭边缘且  
含噪声少的图像处理效果较好。  
2
2
}
G
x,y  
{  
f
x,y  
f  
x 1,y 1  
f
x 1,y  
f  
x,y 1  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
G x , yꢀ称为Roberts交叉算子。在实际应用中为简化计算,用梯度函数的Roberts绝对值  
来近似:  
G
x, y  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
用卷积模板表示为:Gx , y G Gꢀ ,其中 G  G 由模板所示。  
 f x, y  f x 1, y 1  f x 1, y  f x, y 1  
          
x
y
x
y
-1 0  
    
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ ꢀꢀꢀ  
    
1 0  
0 -1  
0 1  
    
    
1 0  
0
1
   
   
Roberts边缘检测算子  
Roberts边缘提取分割实例  
*
读取图像ꢀꢀꢀꢀꢀꢀꢀꢀ  
read_image (Image, 'fabrik')  
Roberts滤波器提取边缘ꢀ  
roberts (Image, ImageRoberts, 'roberts_max')  
进行阈值分割ꢀꢀꢀꢀꢀꢀ  
threshold (ImageRoberts, Region, 9, 255)  
进行区域骨骼化ꢀꢀꢀꢀꢀ  
skeleton (Region, Skeleton)  
显示图像ꢀꢀꢀꢀꢀꢀꢀꢀ  
dev_display (Image)  
设置输出颜色为红色ꢀꢀꢀ  
dev_set_color ('red')  
显示骨骼ꢀꢀꢀꢀꢀꢀꢀꢀ  
dev_display (Skeleton)  
*
a)原图  
*
*
*
*
*
(b)阈值后  
(c)边缘诡取并骨骼化  
图像增强的点运算  
Prewitt和Sobel算子的方程完全一样,只是常量c=1,其卷积模板如图所示:  
-
1 -1 -1 -1 0 1  
   
   
   
-1 0 1  
0
0 0  
1 1 1  -1 0 1  
    
Prewitt边缘检测算子  
由于常量c不同,这一算子与Sobel算子不同的地方在于没有把重点放在接近模板中心  
的像素点。当用两个掩模板(卷积算子)组成边缘检测器时,通常取较大的幅度作为输出值,  
这使得它们对边缘的走向有些敏感。取它们的平方和的开方可以获得性能更一致的全方位  
的响应,这与真实的梯度值更接近。  
另一种方法是,可以将Prewitt以算子扩展成8个方向,即模板边缘算子,这些算子样板由  
理想的边缘子图构成。依次用边缘样板去检测图像,与被检测区域原图相似的样板给出最大值。  
1 1 1   
1
- 2 -1  
P x, y  
   
用这个最大值ꢀꢀꢀꢀꢀ作为算子的输出值ꢀꢀꢀ, 这样可将边缘像素检测出来。  
1 -1 -1  
定义Prewitt边缘检测算子模板如图所示:  
1 1 1    
1
1 -1 1 -1 -1  
  
- 2 1  
  
   
1 - 2 -1 1 - 2 -1  
   
1
1 1 -1 1 1 1   
-1 -1 -1  
   
1 1 1  
-
1 -1 -1 -1 -1 1 -1 1 1  
   
   
-1 -2 1  
-
1 - 2 1  
1
-2 1  
-1 -2 1  
   
   
1 1 1  1 1 1 -1 1 1 -1 -1 1  
   
   
  
Prewitt边缘检测算子模板  
Prewitt边缘提取实例  
程序如下:  
*
*
读取图像ꢀꢀꢀꢀꢀread_image (Image, 'fabrik')  
prewitt算子进行边缘提取prewitt_amp (Image,  
ImageEdgeAmp)  
*
2
*
*
*
*
进行阈值操作ꢀꢀꢀthreshold (ImageEdgeAmp, Region, 20,  
55)  
a)原图  
(b)Prewitt边缘提取  
骨骼化操作ꢀꢀꢀꢀskeleton (Region, Skeleton)  
显示图像ꢀꢀꢀꢀꢀdev_display (Image)  
设置输出颜色为红色dev_set_color ('red')  
显示骨骼图像ꢀꢀꢀdev_display (Skeleton)  
c)阈值后  
(d)骨骼化  
Kirsch算法  
Kirsch算法由ꢀK ~ Kꢀ八个方向的模板决定,将 K ~ Kꢀ的模板元素分别与当前像素  
0
7
0
7
点的模板区域的像素点相乘,然后选八个值中最大的值作为中央像素的边缘强度。  
g
x, y  
max  
g , g ,, g  
T
0
1
其中:  
1
1
g
x, y  
K k,l f x  k, y  l  
     
   
i
k1 l1  
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
Kirsch边缘提取实例  
*
读取图像ꢀꢀꢀꢀꢀ  
read_image (Image, 'fabrik')  
kirsch算子进行边缘检测  
kirsch_amp (Image, ImageEdgeAmp)  
进行阈值操作ꢀꢀꢀ  
threshold (ImageEdgeAmp, Region, 70, 255)  
骨骼化操作ꢀꢀꢀꢀ  
skeleton (Region, Skeleton)  
显示图像ꢀꢀꢀꢀꢀ  
dev_display (Image)  
设置输出颜色为红色  
dev_set_color ('red')  
显示骨骼图像ꢀꢀꢀ  
dev_display (Skeleton)  
*
*
*
(a)原图  
(b)Kirsch边缘提取  
*
*
*
(c)阈值后  
(d)骨骼化  
高斯-拉普拉斯边缘提取实例  
程序执行结果如图所示:  
程序如下:  
*关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_close_window ()  
*获取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀread_image (Image, 'mreut')  
*获得图像大小ꢀꢀꢀꢀꢀꢀꢀget_image_size (Image, Width,  
a)原图  
Height)  
打开与图像大小相适应的窗口dev_open_window (0, 0, Width,  
Height, 'black', WindowID)  
设置窗口的字体14号字,Courier New字体,粗体  
set_display_font (WindowID, 14, 'mono', 'true', 'false')  
进行高斯-拉普拉斯变换  
laplace_of_gauss (Image, ImageLaplace, 5)  
通过提取高-拉普拉斯图像上的零交叉点进行边缘检测  
zero_crossing (ImageLaplace, RegionCrossing2)  
*
*
*
*
b)高斯-拉普拉斯  
边缘提取图  
(c)零交叉点边缘  
检测效果图  
图像增强的点运算  
Canny边缘检测算子是一种具有较好边缘检测性能的算子,利用高斯函数的一阶微分  
性质,把边缘检测问题转换为检测准则函数极大值的问题.能在噪声抑制和边缘检测之间  
取得较好的折中。  
一般来说,图像边缘检测必须能有效地抑制噪声,且有较高的信噪比,这样检测的边  
缘质量也越高。  
Canny边缘检测就是极小化由图像信噪比和边缘定位精度乘积组成的函数表达式,得  
到最优逼近算子。  
与Marr的LOG边缘检测类似,Canny也属于先平滑后求导的方法。  
Canny边缘提取分割实例  
程序如下:  
*
*
获取图像ꢀꢀread_image (Image, 'fabrik')  
使用canny算法进行边缘提取edges_image (Image, ImaAmp,  
ImaDir, 'lanser2', 0.5, 'nms', 12, 22)  
*
*
*
阈值分割ꢀꢀthreshold (ImaAmp, Edges, 1, 255)  
骨骼化skeleton (Edges, Skeleton)  
(a)原图  
(b)Canny边缘提取  
将骨骼化的区域转化为XLD  
gen_contours_skeleton_xld (Skeleton, Contours, 1, 'filter')  
*
*
*
显示图像ꢀꢀdev_display (Image)  
设置6种输出颜色ꢀdev_set_colored (6)  
显示XLDꢀꢀdev_display (Contours)  
(c)骨骼化  
(d)边缘轮廓显示  
亚像素级别的边缘提取  
亚像素级别的边缘提取实例  
程序执行结果如图所示:  
程序如下:  
*
关闭窗口ꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
dev_close_window ()  
读取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
read_image (Image, 'fabrik')  
打开适应图像大小的窗口ꢀꢀ  
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)  
对图像进行亚像素区域提取ꢀ  
edges_sub_pix (Image, Edges, 'canny', 2, 12, 22)  
放大图像用于详细的边缘检查  
*
*
(a)原图  
*
*
dev_set_part160250210300)  
dev_display (Image)  
dev_display (Edges)  
(b)边缘提取图  
(c)局部边缘检查图  
H o u g h 变 换  
Hough 变换  
理想情况下,前面讨论的方法应该只产生边缘上的像素。在实际  
中由于噪声和光照不均等因素,使得在很多情况下所获得的边缘点是  
不连续的。因此,典型的边缘检测算法遵循用链接过程把像素组装成  
有意义的边缘的方法。一种寻找并链接图像中线段的处理方式是  
Hough变换。  
直角坐标参数空间  
在图像 x  y 坐标空间中,经过ꢀi  
x , yꢀ的直线有无数条,这些线对某些a值和b值来说,  
   
i
均满足  
y  ax  b  
i
i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
x , y  
如果将 x  y 视为常数,而将原本的参数a和b视为变量,这样可对固定点ꢀ  
ꢀ 产生  
i i  
i
i
单独的一条,直线可表示为  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀbxayꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
i i  
x ,y  
就变换到了参数平面a-b。考虑图像坐标空间的另一点ꢀ  
应的一条直线,表示为  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
j j  
ꢀ ,它在参数空间中也有相  
b  x a y  
j
j
这条直线与点在参数空间的直线相交于一点,  
如图所示:  
极坐标参数空间  
直角坐标参数空间的实际困难是a(直线的斜率)接近无限大,也就是接近垂直方向。解  
.
决该困难的一种方法是使用直线的标准表达式,即:  
xcosysin  
ꢀꢀ ꢀꢀꢀꢀꢀꢀ
曲线检测  
Hough变换同样适用于方程已知的曲线检测。图像坐标空间的一条已知的曲线方程也可  
以建立其相应的参数空间。由此,图像坐标空间中的一点,在参数空间中就可以映射为相应  
的轨迹曲线或者曲面。  
例如对于已知的圆方程,其直角坐标的一般方程为  
2
2
2
r  
x a  
y b  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
Hough变换可以检测某一任意形状边界的图形并且抗噪声能力强,能够在信噪比较低的  
条件下检测出直线或解析曲线。不过在进行变换前需要做二值化以及边缘检测等图像预处理  
工作,会损失掉原始图像中的许多信息。  
直线检测  
Hough变换图像分割实例ꢀ程序如下:  
*
*
*
*
*
*
*
*
*
*
*
*
*
*
读取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ read_image (Image, 'fabrik')  
获得目标区域图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀrectangle1_domain (Image, ImageReduced, 170, 280, 310, 360)  
Sobel边缘检测算子提取边缘ꢀꢀꢀꢀꢀꢀꢀꢀꢀsobel_dir (ImageReduced, EdgeAmplitude, EdgeDirection, 'sum_abs', 3)  
设置输出颜色为红色ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_set_color ('red')  
阈值分割得到图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀthreshold (EdgeAmplitude, Region, 55, 255)  
截取图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ reduce_domain (EdgeDirection, Region, EdgeDirectionReduced)  
进行Hough变换ꢀꢀhough_lines_dir (EdgeDirectionReduced, HoughImage, Lines, 4, 2, 'mean', 3, 25, 5, 5, 'true', Angle, Dist)  
将霍夫变换提取直线以普通形式描述的输入行存储为区域ꢀgen_region_hline (LinesHNF, Angle, Dist)  
显示图像ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_display (Image)  
设置输出颜色数目ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_set_colored (12)  
设置输出填充方式为轮廓ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀdev_set_draw ('margin')  
显示LinesHNFꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ dev_display (LinesHNF)  
设置输出填充方式为填充”  
显示Lines  
dev_set_draw ('fill')  
dev_display (Lines)  
直线检测  
分 水 岭 算 法  
分水岭算法  
分水岭”这个名字与一种地貌特点有关,它的思想是,把图像的  
灰度看作一张地形图,图像中的每一点像素的灰度值表示该点的海拔  
高度,高灰度值代表山脉,低灰度值代表盆地,每一个局部极小值及  
其影响区域称为集水盆,而集水盆的边界则形成分水岭。  
分水岭算法的基本认识  
分水岭算法分割实例  
程序如下:  
*
获取图像ꢀ  
read_image (Br2, 'particle')  
对单通道图像进行高斯平滑处理,去除噪声  
gauss_filter (Br2, ImageGauss, 9)  
将图像颜色进行反转  
invert_image (ImageGauss, ImageInvert)  
对高斯平滑后的图像进行分数岭处理与阈值分割,提取出盆地区  
*
(a)原图  
(b)原图反转  
*
*
watersheds (ImageInvert, Basins, Watersheds)  
watersheds_threshold (ImageInvert, Basins1,30)  
(c)分水岭区域  
(d)分割后得到的盆地区域  
ꢀ小ꢀꢀꢀ结 ꢀꢀꢀꢀ  
本章小结  
本章主要介绍了图像分割的基本概念、公式推导以及适用情况。具体介绍  
了阈值分割、区域分割、边缘检测、Hough变换、分水岭算法这几种图像分割  
算法。我们需要虑实际问题的特殊性,根据不同的检测图像特征可以使用不同  
的方法。图像分割问题是一个十分困难的问题。因此,人们需要不断地进行学  
习,不断地探索使用新方法对图像进行处理,以得到预期的效果。本章讨论的  
方法都是实际应用中普遍使用的具有代表性的技术。  
习ꢀ题  
5
5
5
5
5
.1ꢀ什么是图像分割?请举出三种图像分割的算法。  
.2ꢀ请简述利用区域生长法进行图像分割的过程。  
.3ꢀ请简述利用图像直方图确定图像阈值的图像分割方法。  
.4ꢀ边缘检测的理论依据是什么?请列举三种边缘检测算法。  
.5ꢀ什么是Hough变换?试述采用Hough变换检测直线的原理以及适用  
场合。  
.6ꢀ对下面的图像1采用简单区域增长法进行区域增长,给出灰度差值为  
T=1;②T=2;③T=3三种情况下的分割图像。  
5